package com.dem.javatestwebsocket.controller;

import cn.hutool.core.util.StrUtil;
import com.dem.javatestwebsocket.model.User;
import com.dem.javatestwebsocket.service.IUserService;
import com.dem.javatestwebsocket.vo.PageVo;
import com.dem.javatestwebsocket.vo.RestResultVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
//使用redtful接口
@RestController

@RequestMapping("/user")
public class UserController {


    @Autowired
    private IUserService userService;


    @PostMapping("add")
    @ApiOperation("添加用户")
    //表示返回一个通用的 REST 结果对象，泛型为 String。
    public RestResultVo<String> add(@RequestBody User user){  //表示方法接收一个 JSON 格式的请求体，并将其自动转换为 User 对象。
        String add = userService.add(user);
        if (StrUtil.isNotBlank(add)) {  //使用 StrUtil.isNotBlank(add) 检查返回的字符串是否非空且非空白字符。
            return RestResultVo.ok(add);
        }
        return RestResultVo.failed("添加失败");
    }



    // 修改接口
    @PostMapping("edit")
    @ApiOperation("修改用户")
    public RestResultVo<User> edit(@RequestBody User user){
        User edit = userService.edit(user);
        if(edit!=null){
            return RestResultVo.ok(edit);
        }
        return RestResultVo.failed();
    }

    // 删除接口
    @GetMapping("delete")
    @ApiOperation("删除用户")
    public RestResultVo<Integer> delete(String userId){
        int deleteOne = userService.delete(userId);
        return RestResultVo.ok(deleteOne);
    }

    // 详情接口
    @GetMapping("detail")
    @ApiOperation("用户详情")
    public RestResultVo<User> detail(String userId){
        User user = userService.detail(userId);
        return RestResultVo.ok(user);
    }

    // 分页查询
    @GetMapping("page")
    @ApiOperation("分页查询")
    public RestResultVo<PageVo<User>> page(String userName, Integer pageNumber, Integer pageSize){
        PageVo<User> page = userService.page(userName, pageNumber, pageSize);
        return RestResultVo.ok(page);
    }
}
